package cn.edu.sdjzu.xg.controller;

import cn.edu.sdjzu.xg.domain.School;
import cn.edu.sdjzu.xg.exception.BysjException;
import cn.edu.sdjzu.xg.service.SchoolService;
import cn.edu.sdjzu.xg.util.Condition;
import cn.edu.sdjzu.xg.util.ControllerHelper;
import cn.edu.sdjzu.xg.util.JSONUtil;
import cn.edu.sdjzu.xg.util.Pagination;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;
import java.util.Collection;
import java.util.List;

@WebServlet("/schoolAdd.ctl")

public class SchoolAddController extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException ,ServletException{
        JSONObject message_jsonObj=new JSONObject();
        resp.setContentType("application/json;charset = utf8 ");
        String req_jsonStr= JSONUtil.getJSON(req);
        JSONObject req_JsonObj= JSON.parseObject(req_jsonStr);
        if( req_JsonObj ==null){
            message_jsonObj.put("message","未收到请求消息！");
            resp.getWriter().println(message_jsonObj);
            return;

        }
        try{
            Pagination pagination= ControllerHelper.getPagination(req_JsonObj);
            List<Condition> conditionList = ControllerHelper.getConditions(req_JsonObj);
            Collection<School> schools= SchoolService.getInstance().findAll(conditionList ,pagination);
            String schools_json= JSON.toJSONString(
                    schools, SerializerFeature.DisableCircularReferenceDetect);
            message_jsonObj.put("totalNum:",pagination.getTotalNum());
            message_jsonObj.put("data",schools_json);
            resp.getWriter().println(message_jsonObj);


        }catch (BysjException e){
            message_jsonObj.put("message",e.getMessage());
            resp.getWriter().println(message_jsonObj);
        }     catch ( SQLException e){

            message_jsonObj.put("message", "数据库操作异常！");
            resp.getWriter().println(message_jsonObj);
            e.printStackTrace();


        }catch (Exception e){
            message_jsonObj.put("message", "网络异常！");
            resp.getWriter().println(message_jsonObj);
            e.printStackTrace();


        }
    }
}

